perm filename CONKIM.FAI[CMS,LCS] blob
sn#371495 filedate 1978-08-02 generic text, type T, neo UTF8
00100 TITLE CON11
00200 A←1 ↔B←2↔C←3 ↔D←4 ↔E←5↔X←6↔Y←7
00300 P←17 ↔ NBUFS←4 ↔ S←10 ↔ LAD←11
00400 SUM←S
00500 PDL: BLOCK 22
00600 IBUF: BLOCK 4
00700 OBUF: BLOCK 4
00800 FILNAM: 'VDSK '
00900 'DMP '
01000 0
01100 0
01200 FIL2: 'KLOAD '
01300 'KIM '
01400 0
01500 0
01600
01700 STAR: MOVE P,[PDPO: IOWD 22,PDL]
01800 OPEN 11,[14↔'DSK '↔IBUF]
01900 JRST 4,.
02000 INBUF 11,NBUFS
02100 LOOKUP 11,FILNAM
02200 JRST 4,.
02300 OPEN [14↔'DSK '↔OBUF,,]
02400 JRST 4,.
02500 OUTBUF NBUFS
02600 ENTER FIL2
02700 JRST 4,.
02800
02900 HRROI Y,-761 ;-777 FOR LAST PROM (256 BYTES)
03000 ;-7 FOR 1400 ?
03100
03200 LOADER: PUSHJ P,INP+1
03300 HRRZI X,200
03400 ADD X,IBUF+2
03500 AOJL Y,LOADER
03600
03700 PUSHJ P,OUTP ;SETUP KIM FORMAT
03800 HRRZI LAD,4000 ;Setup load address = 800 hex.
03900 HRRZI A,"L" ;Kim load command.
04000 HRRZM A,1(Y)
04100 AOBJN Y,.+2
04200 PUSHJ P,OUTP
04300 BLOOP: HRRZI A,";" ;Record mark.
04400 HRRZM A,1(Y)
04500 AOBJN Y,.+2
04600 PUSHJ P,OUTP
04700 HRRZI A,"8" ;Msd of hex byte count.
04800 HRRZM A,1(Y)
04900 AOBJN Y,.+2
05000 PUSHJ P,OUTP
05100 HRRZI A,"0" ;Lsd
05200 HRRZM A,1(Y)
05300 AOBJN Y,.+2
05400 PUSHJ P,OUTP
05500 HRRZI A,"0" ;Msd of msbyte of hex load addr
05600 HRRZM A,1(Y)
05700 AOBJN Y,.+2
05800 PUSHJ P,OUTP
05900 HRRZI A,(LAD) ;Lsd
06000 LSH A,-10
06100 ANDI A,17
06200 HRRZI SUM,210(A) ;Start check sum.
06300 HRRZ A,HEX(A) ;Make hex.
06400 HRRZM A,1(Y)
06500 AOBJN Y,.+2
06600 PUSHJ P,OUTP
06700 HRRZI A,(LAD) ;Msd of lsbyte.
06800 ANDI A,377
06900 ADDI SUM,(A)
07000 LSH A,-4
07100 HRRZ A,HEX(A)
07200 HRRZM A,1(Y)
07300 AOBJN Y,.+2
07400 PUSHJ P,OUTP
07500 HRRZI A,"0"
07600 HRRZM A,1(Y) ;Lsd
07700 AOBJN Y,.+2
07800 PUSHJ P,OUTP
07900
08000 PUSHJ P,INP
08100 LOAD: HRRZ A,1(X)
08200 ANDI A,377
08300 ADDI S,(A)
08400 LSH A,-4
08500 HRRZ A,HEX(A)
08600 HRRZM A,1(Y)
08700 AOBJN Y,.+2
08800 PUSHJ P,OUTP
08900 HRRZ A,1(X)
09000 ANDI A,17
09100 HRRZ A,HEX(A)
09200 HRRZM A,1(Y)
09300
09400 AOBJN Y,.+2
09500 PUSHJ P,OUTP
09600 AOBJN X,LOAD
09700
09800 HRRZI A,(S)
09900 LSH A,-14
10000 ANDI A,17
10100 HRRZ A,HEX(A)
10200 HRRZM A,1(Y)
10300 AOBJN Y,.+2
10400 PUSHJ P,OUTP
10500 HRRZI A,(S)
10600 LSH A,-10
10700 ANDI A,17
10800 HRRZ A,HEX(A)
10900 HRRZM A,1(Y)
11000 AOBJN Y,.+2
11100 PUSHJ P,OUTP
11200 HRRZI A,(S)
11300 LSH A,-4
11400 ANDI A,17
11500 HRRZ A,HEX(A)
11600 HRRZM A,1(Y)
11700 AOBJN Y,.+2
11800 PUSHJ P,OUTP
11900 ANDI S,17
12000 HRRZ A,HEX(S)
12100 HRRZM A,1(Y)
12200 AOBJN Y,.+2
12300 PUSHJ P,OUTP
12400
12500 ADDI LAD,200 ;Next record.
12600 CAIE LAD,6000 ;Check if done
12700 JRST BLOOP
00100 HRRZI A,";" ;Last record.
00200 HRRZM A,1(Y)
00300 AOBJN Y,.+2
00400 PUSHJ P,OUTP
00500 HRRZI A,"0"
00600 HRRZM A,1(Y)
00700 AOBJN Y,.+2
00800 PUSHJ P,OUTP
00900 HRRZM A,1(Y)
01000 AOBJN Y,.+2
01100 PUSHJ P,OUTP
01200 HRRZM A,1(Y)
01300 AOBJN Y,.+2
01400 PUSHJ P,OUTP
01500 HRRZM A,1(Y)
01600 AOBJN Y,.+2
01700 PUSHJ P,OUTP
01800 HRRZM A,1(Y)
01900 AOBJN Y,.+2
02000 PUSHJ P,OUTP
02100 HRRZM A,1(Y)
02200 AOBJN Y,.+2
02300 PUSHJ P,OUTP
02400
02500 HRRZM A,1(Y) ;Last ck sum
02600 AOBJN Y,.+2
02700 PUSHJ P,OUTP
02800 HRRZM A,1(Y)
02900 AOBJN Y,.+2
03000 PUSHJ P,OUTP
03100 HRRZM A,1(Y)
03200 AOBJN Y,.+2
03300 PUSHJ P,OUTP
03400 HRRZM A,1(Y)
03500 AOBJN Y,.+1
03600 PUSHJ P,OUTP
03700 RELEAS
03800 EXIT
03900
04000 INP: HRRM X,IBUF+1
04100 IN 11,
04200 JRST SETX
04300 STATO 11,20000
04400 JRST 4,.
04500 ERROR: OUTSTR [ASCIZ/?????/]
04600 EXIT
04700
04800 HEX: "0"
04900 "1"
05000 "2"
05100 "3"
05200 "4"
05300 "5"
05400 "6"
05500 "7"
05600 "8"
05700 "9"
05800 "A"
05900 "B"
06000 "C"
06100 "D"
06200 "E"
06300 "F"
06400
06500 OUTP: HRRM Y,OBUF+1
06600 OUT
06700 CAIA
06800 JRST 4,.
06900 HRRZ Y,OBUF+2
07000 MOVNI Y,(Y)
07100 HRLZI Y,(Y)
07200 HRR Y,OBUF+1
07300 POPJ P,
07400
07500 SETX: HRRZ X,IBUF+2
07600 MOVNI X,(X)
07700 HRLZI X,(X)
07800 HRR X,IBUF+1
07900 POPJ P,
08000 END STAR